package com.ruicar.afs.cloud.risk.tortoise.dto.response.apply;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ruicar.afs.cloud.risk.tortoise.anno.RefData;
import com.ruicar.afs.cloud.risk.tortoise.dto.response.GwtRefData;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * @Description
 * @Author Peng Jinbo
 * @Date 2020/07/27 18:37
 */
@Data
@AllArgsConstructor
@Builder
@ApiModel("新车信息 - cavehicle")
public class GwtNewCar extends GwtRefData implements Serializable {

    /**
     * Asset code
     */
    @JsonInclude
    @JSONField(name = "zichancode")
    @JsonProperty("zichancode")
    private String assetCode;

    /**
     * Option price
     */
    @JsonInclude
    @JSONField(name = "optionprice")
    @JsonProperty("optionprice")
    private BigDecimal optionPrice;

    /**
     * Guide price
     */
    @JsonInclude
    @JSONField(name = "guideprice")
    @JsonProperty("guideprice")
    private BigDecimal guidePrice;

    /**
     * Brand
     */
    @JsonInclude
    @RefData(useFieldName = true)
    @JSONField(name = "brand")
    @JsonProperty("brand")
    private String brand;

    /**
     * Brand name
     */
    @JsonIgnore
    @JSONField(serialize = false)
    private String brandName;

    /**
     * Vehicle type
     */
    @JsonInclude
    @RefData(dicKey = "carType",translatedKey = "tortoiseCarType",translatedByKey = true)
    @JSONField(name = "vehicleclass")
    @JsonProperty("vehicleclass")
    private String vehicleType;

    @JsonInclude
    @RefData(useFieldName = true)
    @JSONField(name = "vehicletype")
    @JsonProperty("vehicletype")
    private String vehicleModel;

    @JsonIgnore
    @JSONField(serialize = false)
    private String vehicleModelName;

    /**
     * New car style
     */
    @JsonInclude
    @RefData(useFieldName = true)
    @JSONField(name = "style")
    @JsonProperty("style")
    private String newCarStyle;

    /**
     * New car style name
     */
    @JsonIgnore
    @JSONField(serialize = false)
    private String newCarStyleName;

    /**
     * Buy purpose
     */
    @JsonInclude
    @RefData(dicKey = "carPurpose",translatedKey = "tortoiseCarPurpose")
    @JSONField(name = "purchasepurpose")
    @JsonProperty("purchasepurpose")
    private String buyPurpose;

    /**
     * Buy province
     */
    @JsonInclude
    @RefData(useFieldName = true)
    @JSONField(name = "purchaseprovince")
    @JsonProperty("purchaseprovince")
    private String buyProvince;

    /**
     * Buy province name
     */
    @JsonIgnore
    @JSONField(serialize = false)
    private String buyProvinceName;

    /**
     * Buy city
     */
    @JsonInclude
    @RefData(useFieldName = true)
    @JSONField(name = "purchasecity")
    @JsonProperty("purchasecity")
    private String buyCity;

    /**
     * Buy city name
     */
    @JsonIgnore
    @JSONField(serialize = false)
    private String buyCityName;

    /**
     * Plate province
     */
    @JsonInclude
    @RefData(useFieldName = true)
    @JSONField(name = "carnumprovince")
    @JsonProperty("carnumprovince")
    private String plateProvince;

    /**
     * Plate province name
     */
    @JsonIgnore
    @JSONField(serialize = false)
    private String plateProvinceName;

    /**
     * Plate city
     */
    @JsonInclude
    @RefData(useFieldName = true)
    @JSONField(name = "carnumcity")
    @JsonProperty("carnumcity")
    private String plateCity;

    /**
     * Plate city name
     */
    @JsonIgnore
    @JSONField(serialize = false)
    private String plateCityName;

    /**
     * Sell price
     */
    @JsonInclude
    @JSONField(name = "invoiceprice")
    @JsonProperty("invoiceprice")
    private BigDecimal sellPrice;
}
